package DAO;

import java.util.ArrayList;
import java.util.List;

import org.hibernate.Criteria;
import org.hibernate.Session;
import org.hibernate.criterion.Order;
import org.hibernate.criterion.Restrictions;

import to.Elemento;
import util.HibernateUtil;

public class ElementoDAO {

	public ArrayList<Elemento> buscarTodos() {

		ArrayList<Elemento> capturaElemento = new ArrayList<Elemento>();
		Session session = null;

		try {
			session = HibernateUtil.getSessionFactory().openSession();
			Criteria criteria = session.createCriteria(Elemento.class);
			capturaElemento = (ArrayList<Elemento>) criteria.list();

		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			session.close();
		}

		return capturaElemento;

	}

	public List<Elemento> buscarElementoPorDeterminacao(Integer determinacao) {

		List<Elemento> listaRetorno = null;

		try {

			Session session = HibernateUtil.getSessionFactory().openSession();
			Criteria criteria = session.createCriteria(Elemento.class);
			criteria.createAlias("determinacao", "d");
			criteria.add(Restrictions.eq("d.codigo", determinacao));
			criteria.addOrder(Order.asc("d.codigo"));
			listaRetorno = (List<Elemento>) criteria.list();

		} catch (Exception e) {
			e.printStackTrace();
		}

		return listaRetorno;
	}


	public Elemento buscarElementoPorCodigo(Integer codigo) throws Exception {
		Elemento elemento = null;
		try {
			Session session = HibernateUtil.getSessionFactory().openSession();
			elemento = (Elemento) session.get(Elemento.class, codigo);
		} catch (Exception e) {
			throw new Exception(e.getMessage());
		}
		return elemento;
	}

}
